﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Data;
using CurriculasEntities;

namespace CurriculasDAO
{

    public class BibliografiaDAO : IBaseDA <BibliografiaBE, int>
    {

        public BibliografiaBE Crear(BibliografiaBE entidad)
        {
            using (EFContext db = new EFContext(Utility.ObtenerCadena()))
            {
                db.Bibliografias.Add(entidad);
                db.SaveChanges();
            }
            return entidad;
        }

        public BibliografiaBE Obtener(int id)
        {
            using (EFContext db = new EFContext(Utility.ObtenerCadena()))
            {
                return db.Bibliografias.Find(id);
            }
        }

        public BibliografiaBE Modificar(BibliografiaBE entidad)
        {
            using (EFContext db = new EFContext(Utility.ObtenerCadena()))
            {
                db.Bibliografias.Attach(entidad);
                db.Entry(entidad).State = EntityState.Modified;
                db.SaveChanges();
            }
            return entidad;
        }

        public void Eliminar(BibliografiaBE entidad)
        {
            using (EFContext db = new EFContext(Utility.ObtenerCadena()))
            {
                db.Bibliografias.Remove(entidad);
                db.SaveChanges();
            }
        }

        public ICollection<BibliografiaBE> ListarTodos()
        {
            using (EFContext db = new EFContext(Utility.ObtenerCadena()))
            {
                return db.Bibliografias.ToList();
            }
        }

        public ICollection<BibliografiaBE> ListarTodos(Expression<Func<BibliografiaBE, bool>> where)
        {
            using (EFContext db = new EFContext(Utility.ObtenerCadena()))
            {
                return db.Bibliografias.Where(where).ToList();
            }
        }

        //public ICollection<BibliografiaBE> ListarCursosHabiles()
        //{
        //    string _sentenciaSql = "usp_ListaCursosHabiles ";

        //    using (EFContext db = new EFContext(Utility.ObtenerCadena()))
        //    {
        //        return db.Database.SqlQuery<CursoBE>(_sentenciaSql).ToList(); ;
        //    }
        //}

    }
}
